package com.wxg

import org.codehaus.groovy.runtime.InvokerHelper

import com.wxg.entity.Person

/**
 * date: 2018年2月23日
 * IDE: Groovy/Grails Tool Suite (Version: 3.6.4.RELEASE) win32
 * -	此版本已经上传到百度网盘
 * 
 * <https://gitee.com/juedui0769/GroovyStudy/blob/master/demo101/gy110_data_and_objects.gy>
 * 在以上代码中是运行失败的,在此代码中是运行成功的！
 * 究其原因,我觉得是在此工程中`com.wxg.entity.Person`是单独定义的,运行时被编译为了class文件,在此代码中可以引用到它
 * 
 * 
 * @author Wxg
 *
 */
class PersonSerializableDemo extends Script{
	def run(){
		println "Hello!"
		def dirpath = 'D:\\wxg\\downloadStore'
		//def storeDir = new File( dirpath )
		def file = new File( dirpath + "\\serialize101.data" )
		
		Person p = new Person(name:'Bob', age:76);
		// Serialize data into a file
		file.withObjectOutputStream { out ->
			out.writeObject(p)
		}
		// ...
		// Then read it back
		// java.lang.ClassNotFoundException: Person
		// 在这个文件中定义的class读取不到?
		file.withObjectInputStream { input ->
			def p2 = input.readObject()
			assert p2.name == p.name
			assert p2.age == p.age
		}
	}
	static void main(String[] args){
		InvokerHelper.runScript(PersonSerializableDemo, args)
	}
}
